class Maybe {
  static of (val) {
    return new Maybe(val)
  }
  constructor (val) {
    this._value = val
  }
  map (fn) {
    return Maybe.of(fn(this._value))
  }
}
class Container{
  static of (val) {
    return new Container(val)
  }
  constructor (val) {
    this._value = val
  }
  map (fn) {
    return Container.of(fn(this._value))
  }
}

module.exports = {
  Maybe,
  Container
}